package com.hsylient.javase.chapter14.base64;

import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import java.util.Base64;

/**
 * Base64严格的意义上来说不是加密算法，它仅仅是将字节数组进行编码，将字节数组编码成为字符串
 */
@Slf4j
public class Base64Test {


    @Test
    public void testHuToolBase64Encode() {
        String text = "我想要天上的月亮，想要漂亮的姑娘";
        String encode = Base64Encoder.encode(text.getBytes());
        log.info("[Base64编码后的字符串] {}", encode);
        log.info("[HuTool工具类编码后的字符串] {}", Base64Encoder.encode(text));
    }

    @Test
    public void testHuToolBase64Decode() {
        String text = "5oiR5oOz6KaB5aSp5LiK55qE5pyI5Lqu77yM5oOz6KaB5ryC5Lqu55qE5aeR5aiY";
        byte[] decode = Base64Decoder.decode(text);
        log.info("[Bases64解码后的字符串] {}", new String(decode));
        // 可以直接编码直接转为字符串
        log.info("[HuTool工具类解码后的字符串] {}", Base64Decoder.decodeStr(text));
    }

    @Test
    public void testJdkBase64() {

        // 编码
        String text = "我想要天上的月亮，想要漂亮的姑娘";
        String encoder = Base64.getEncoder().encodeToString(text.getBytes());
        System.out.println(encoder);

        // 解码
        byte[] decode = Base64.getDecoder().decode(encoder.getBytes());
        System.out.println(new String(decode));
    }
}
